#ifndef							__IAPISOUND_H__
#	define						__IAPISOUND_H__

#	include						<QtCore/QObject>
#	include						"IOrder.h"
#	include						"ISoundPacket.h"
#	include						"IEncodedSoundPacket.h"

class							IApiSound
{
public:
	virtual ~IApiSound() {};

public:
	virtual void				decode(IEncodedSoundPacket *, ISoundPacket *) = 0;
	virtual void				encode(ISoundPacket *, IEncodedSoundPacket *) = 0;
	virtual ISoundPacket		*decode(IEncodedSoundPacket *) = 0;
	virtual IEncodedSoundPacket	*encode(ISoundPacket *) = 0;
	virtual void				play(ISoundPacket *, unsigned int) = 0;
	virtual void				takeOrder(IOrder *order) = 0;
	virtual IEncodedSoundPacket	*getIEncodedSoundPacket() = 0;
	virtual	void				setInput(bool) = 0;
	virtual	void				setOutput(bool) = 0;

public slots:
	virtual void				readBufferFull(ISoundPacket *packet) = 0;

protected:
	virtual void			        _inputReady(ISoundPacket *packet) = 0;
};

#endif							// !__IAPISOUND_H__
